package org.agent.aigccore.model.po;

import io.swagger.v3.oas.annotations.media.Schema;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户信息实体类
 */
@Schema(description = "用户信息实体")
public class UserInfoPO implements Serializable {
    private static final long serialVersionUID = 1L;
    
    /**
     * 主键
     */
    @Schema(description = "主键ID", example = "1")
    private Long id;
    
    /**
     * 用户ID
     */
    @Schema(description = "用户ID", example = "user123")
    private String userId;
    
    /**
     * 用户名
     */
    @Schema(description = "用户名", example = "admin")
    private String username;
    
    /**
     * 密码
     */
    @Schema(description = "密码", example = "encrypted_password")
    private String password;
    
    /**
     * 邮箱
     */
    @Schema(description = "邮箱", example = "admin@example.com")
    private String email;
    
    /**
     * 手机号
     */
    @Schema(description = "手机号", example = "13800138000")
    private String phone;
    
    /**
     * 姓名
     */
    @Schema(description = "姓名", example = "张三")
    private String name;
    
    /**
     * 身份证
     */
    @Schema(description = "身份证号", example = "110101199001011234")
    private String idCard;
    
    /**
     * 状态
     */
    @Schema(description = "状态", example = "ACTIVE")
    private String status;
    
    /**
     * 角色：USER-普通用户，ADMIN-管理员
     */
    @Schema(description = "角色", example = "ADMIN")
    private String role;
    
    /**
     * 最后登录时间
     */
    @Schema(description = "最后登录时间", example = "2024-01-01T10:00:00")
    private Date lastLoginTime;
    
    /**
     * 创建人
     */
    @Schema(description = "创建人", example = "admin")
    private String creator;
    
    /**
     * 更新人
     */
    @Schema(description = "更新人", example = "admin")
    private String modifier;
    
    /**
     * 备注
     */
    @Schema(description = "备注", example = "系统管理员")
    private String remark;
    
    /**
     * 创建时间
     */
    @Schema(description = "创建时间", example = "2024-01-01T00:00:00")
    private Date gmtCreate;
    
    /**
     * 更新时间
     */
    @Schema(description = "更新时间", example = "2024-01-01T10:00:00")
    private Date gmtModified;
    
    // Getter和Setter方法
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public String getUserId() {
        return userId;
    }
    
    public void setUserId(String userId) {
        this.userId = userId;
    }
    
    public String getUsername() {
        return username;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }
    
    public String getPassword() {
        return password;
    }
    
    public void setPassword(String password) {
        this.password = password;
    }
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    
    public String getPhone() {
        return phone;
    }
    
    public void setPhone(String phone) {
        this.phone = phone;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getIdCard() {
        return idCard;
    }
    
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    
    public String getStatus() {
        return status;
    }
    
    public void setStatus(String status) {
        this.status = status;
    }
    
    public String getRole() {
        return role;
    }
    
    public void setRole(String role) {
        this.role = role;
    }
    
    public Date getLastLoginTime() {
        return lastLoginTime;
    }
    
    public void setLastLoginTime(Date lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }
    
    public String getCreator() {
        return creator;
    }
    
    public void setCreator(String creator) {
        this.creator = creator;
    }
    
    public String getModifier() {
        return modifier;
    }
    
    public void setModifier(String modifier) {
        this.modifier = modifier;
    }
    
    public String getRemark() {
        return remark;
    }
    
    public void setRemark(String remark) {
        this.remark = remark;
    }
    
    public Date getGmtCreate() {
        return gmtCreate;
    }
    
    public void setGmtCreate(Date gmtCreate) {
        this.gmtCreate = gmtCreate;
    }
    
    public Date getGmtModified() {
        return gmtModified;
    }
    
    public void setGmtModified(Date gmtModified) {
        this.gmtModified = gmtModified;
    }
    
    @Override
    public String toString() {
        return "UserInfoPO{" +
                "id=" + id +
                ", userId='" + userId + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                ", phone='" + phone + '\'' +
                ", name='" + name + '\'' +
                ", idCard='" + idCard + '\'' +
                ", status='" + status + '\'' +
                ", role='" + role + '\'' +
                ", lastLoginTime=" + lastLoginTime +
                ", creator='" + creator + '\'' +
                ", modifier='" + modifier + '\'' +
                ", remark='" + remark + '\'' +
                ", gmtCreate=" + gmtCreate +
                ", gmtModified=" + gmtModified +
                '}';
    }
}